//#include<bits/stdc++.h>
//using namespace std;
//typedef long long LL;
//
//int s[] = {6,2,5,5,4,5,6,3,7,6,8,4,7,7,6,7,8,5,9,8,11}; 
//int sl(int x){
//	int sum = 0;
//	if(x < 10){
//		sum = s[x];
//	}
//	else{
//		int t;
//		t = x;
//		while(t != 0){
//			sum += s[t % 10];
//			t /= 10;
//		}
//	}
//	return sum;
//}
//int main()
//{
//	int n; cin >> n;
//	if(n <= 4) 
//	{
//		cout << "0" << endl;
//		return 0;
//	}
//	n -= 4;
//	int ret = 0;
//	for(int i = 0; i <= 1000; i++)
//	{
//		for(int j = 0; j <= 1000; j++)
//		{
//			if(sl(i) + sl(j) + sl(i + j) == n)
//			{
//				ret++;
//			}
//		}
//	}
//	
//	
//	cout << ret << endl;
//	return 0;
//}


#include<bits/stdc++.h>
using namespace std;

typedef long long LL;
const int N = 1e5 + 10;
struct node
{
	LL l1, l2;
}a[N];
LL n;
LL get_l(LL a, LL b, LL c, LL d)
{
	LL dx = a - c;
	LL dy = b - d;
	return dx * dx + dy * dy;	
} 
int main()
{
	LL x1, y1, x2, y2;
	cin >> x1 >> y1 >> x2 >> y2;
	cin >> n;
	for(int i = 1; i <= n; i++)
	{
		LL x,y; cin >> x >> y;
		a[i].l1 = get_l(x, y, x1, y1);
		a[i].l2 = get_l(x, y, x2, y2);
	}
	LL max1 = 0, max2= 0;
	for(int i = 1; i <= n; i++)
	{
		LL la = a[i].l1, lb = a[i].l2;
		
		if(max1 >= la && max1 >= lb) continue;
		if(max2 >= la && max2 >= lb) continue; 
		if(la > lb) max2 = max(max2, lb);
		else if(la == lb)
		{
			 if (max1 <= max2) 
                max1 = max(max1, la);
            else 
                max2 = max(max2, lb);
		}
		else max1 = max(max1, la);
	} 

	cout << max1 + max2 << endl;
	
	return 0;
}

